package com.model.dao.base;

import java.util.List;

public interface BaseDao<T> {
  
 /**
  * 添加
  * @param t 实体参数
  */
  public void save(T t);
  /**
   * 修改
   * @param   t 实体参数
   */
  public void update(T t);
  /**
   * 删除
   * @param   t 实体参数
   */
  public void delete(T t);
  /**
   * 查询记录
   * @param   t 实体参数
   * @return  结果集
   */
  public List<T> QueryList(Class<T> t,Object[] objects);
  /**
   * 通过id 查找记录
   * @param   id 参数
   * @return  结果
   */
  public T QueryById(Class<T> t,int id);
  /**
   * 通过自定义sql语句查询记录
   * @param   sql  sql语句
   * @param   args
   * @return  结果集
   */
  public List<T> QueryBySqlList(String sql,Object[] args,Class<T> entityClass);
  /**
   * 通过自定义hql语句查询记录
   * @param hql
   * @param args
   * @return
   */
  public List<T> QueryByHqlList(String hql, Object[] args); 
  /**
   * 查询记录数
   * @param t   实体参数 
   * @return   结果集个数
   */
  public int getAllRowCount(String hql, Object[] args);
  /**
   * 分页查询
   * @param offset 开始页记录数
   * @param length 每页记录数
   * @param hql   hql语句 
   * @return
   */
  public List<T> queryForPage(int offset, int length,String hql,Object[] args);
  /**
   * 清除缓冲区
   */
  public void flush();
}
